MeteoPointInit Subroutine

public subroutine MeteoPointInit(pointfile, path_out, time)

Initialize export of point site data

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: pointfile

file containing coordinate of points

character(len=*), intent(in) :: path_out

path of output folder

type(DateTime), intent(in) :: time

start time


Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: err_io
integer(kind=short), public :: fileunit

Source Code

SUBROUTINE MeteoPointInit &
!
( pointfile, path_out, time )

IMPLICIT NONE

!Arguments with intent (in):
CHARACTER (LEN = *), INTENT(IN) :: pointfile  !!file containing coordinate of points
CHARACTER (LEN = *), INTENT(IN) :: path_out  !!path of output folder
TYPE (DateTime),     INTENT(IN) :: time  !!start time

!local declarations
INTEGER (KIND = short) :: err_io
INTEGER (KIND = short) :: fileunit

!-------------------------end of declarations----------------------------------

timePointExport = time

!open point file

fileunit = GetUnit ()
OPEN ( unit = fileunit, file = pointfile(1:LEN_TRIM(pointfile)), &
      status='OLD', iostat = err_io )

IF ( err_io /= 0 ) THEN
	!file does not exist
    CALL Catch ('error', 'Meteo', 'out point file does not exist')
END IF 

!Read metadata
CALL ReadMetadata (fileunit, sites)

!set time increment
timeIncrementSites = sites % timeIncrement

!check dt
IF (.NOT. ( MOD ( sites % timeIncrement, dtMeteo ) == 0 ) ) THEN
  CALL Catch ('error', 'Meteo', 'dt out sites must be multiple of dtMeteo ')
END IF

CLOSE ( fileunit )

!create virtual network and initialize file for output

!precipitation
IF ( dtPrecipitation > 0 ) THEN
    fileUnitPointPrecipitation = GetUnit ()
    OPEN ( unit = fileUnitPointPrecipitation, &
           file = TRIM(path_out) // 'point_precipitation.fts' )
    
    CALL CopyNetwork ( sites, sitesPrecipitation )

    sitesPrecipitation % description = 'precipitation data exported from FEST'

    sitesPrecipitation % unit = 'mm'

    sitesPrecipitation % offsetZ = 2.

    CALL WriteMetadata ( network = sitesPrecipitation, &
                        fileunit = fileUnitPointPrecipitation )

    CALL WriteData (sitesPrecipitation, fileUnitPointPrecipitation, .TRUE.)
    
END IF

!air temperature
IF ( dtTemperature > 0 ) THEN
    fileUnitPointTemperature = GetUnit ()
    OPEN ( unit = fileUnitPointTemperature, &
           file = TRIM(path_out) // 'point_temperature.fts' )
    
    CALL CopyNetwork ( sites, sitesTemperature )

    sitesTemperature % description = 'air temperature data exported from FEST'

    sitesTemperature % unit = 'degree Celsius'

    sitesTemperature % offsetZ = 2.

    CALL WriteMetadata ( network = sitesTemperature, &
                        fileunit = fileUnitPointTemperature )
    
    CALL WriteData (sitesTemperature, fileUnitPointTemperature, .TRUE.)
    
END IF

!solar radiation
IF ( dtRadiation > 0 ) THEN
    fileUnitPointRadiation = GetUnit ()
    OPEN ( unit = fileUnitPointRadiation, &
           file = TRIM(path_out) // 'point_radiation.fts' )
    
    CALL CopyNetwork ( sites, sitesRadiation )

    sitesRadiation % description = 'solar radiation data exported from FEST'

    sitesRadiation % unit = 'w/m2'

    sitesRadiation % offsetZ = 2.

    CALL WriteMetadata ( network = sitesRadiation, &
                        fileunit = fileUnitPointRadiation )
    
    CALL WriteData (sitesRadiation, fileUnitPointRadiation, .TRUE.)
    
END IF

!air relative humidity
IF ( dtRelHumidity > 0 ) THEN
    fileUnitPointRH = GetUnit ()
    OPEN ( unit = fileUnitPointRH, &
           file = TRIM(path_out) // 'point_RH.fts' )
    
    CALL CopyNetwork ( sites, sitesRH )

    sitesRH % description = 'air relative humidity data exported from FEST'

    sitesRH % unit = '% 0-100'

    sitesRH % offsetZ = 2.

    CALL WriteMetadata ( network = sitesRH, &
                        fileunit = fileUnitPointRH )
    
    CALL WriteData (sitesRH, fileUnitPointRH, .TRUE.)
    
END IF


!wind speed
IF ( dtWindSpeed > 0 ) THEN
    fileUnitPointWS = GetUnit ()
    OPEN ( unit = fileUnitPointWS, &
           file = TRIM(path_out) // 'point_WS.fts' )
    
    CALL CopyNetwork ( sites, sitesWS )

    sitesWS % description = 'wind speed data exported from FEST'

    sitesWS % unit = 'm/s'

    sitesWS % offsetZ = 10.

    CALL WriteMetadata ( network = sitesWS, &
                        fileunit = fileUnitPointWS )
    
    CALL WriteData (sitesWS, fileUnitPointWS, .TRUE.)
    
END IF

! destroy sites
CALL DestroyNetwork ( sites )

RETURN
END SUBROUTINE MeteoPointInit